// LabMatrix.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#define SIZE 2
using namespace std;

class TestMatrix{
	public:
		int mat[SIZE][SIZE];
	
		//TestMatrix(int a,int b){
			//int **arr = new int*[a];
			//for(int i=0; i<a; i++)
			///	arr[i] = new int[b];
		//}

		void add(TestMatrix,TestMatrix );
		void sub(TestMatrix,TestMatrix);
		void mul(TestMatrix,TestMatrix);
};

void TestMatrix :: add(TestMatrix x, TestMatrix y){

	for(int i=0; i<SIZE; i++)
		for(int j=0; j<SIZE; j++)
			mat[i][j] = x.mat[i][j] + y.mat[i][j];
}

void TestMatrix :: sub(TestMatrix x, TestMatrix y){

	for(int i=0; i<SIZE; i++)
		for(int j=0; j<SIZE; j++)
			mat[i][j] = x.mat[i][j] - y.mat[i][j];
}

void TestMatrix :: mul(TestMatrix x, TestMatrix y){
		for(int i=0; i<SIZE; i++){
			for(int j=0; j<SIZE; j++) {
				mat[i][j] = 0;
				for(int k=0; k<SIZE;k++){
					mat[i][j] += x.mat[i][k] * y.mat[k][j];
				}
			}
		}
}

int main(){
		int a,b;

		TestMatrix m1,m2, res;
		cout<<"Matrix Manipulation Program"<<endl;
		cout<<"Input matrix 1 [SIZExSIZE]:";
		for(int i=0; i<SIZE; i++)
			for(int j=0; j<SIZE; j++)
				cin>> m1.mat[i][j];

		cout<<endl<<"Input matrix 2 [SIZExSIZE]:";
		for(int i=0; i<SIZE; i++)
			for(int j=0; j<SIZE; j++)
				cin>> m2.mat[i][j];

		cout<<endl<<"Calculating Output..."<<endl;
		res.add(m1,m2);

		cout<<"Result:"<<endl;
		for(int i=0; i<SIZE; i++)
			for(int j=0; j<SIZE; j++)
				cout<<res.mat[i][j]<<endl;

		res.sub(m1,m2);
		cout<<"Result:"<<endl;
		for(int i=0; i<SIZE; i++)
			for(int j=0; j<SIZE; j++)
				cout<<res.mat[i][j]<<endl;

		res.mul(m1,m2);
		cout<<"Result:"<<endl;
		for(int i=0; i<SIZE; i++)
			for(int j=0; j<SIZE; j++)
				cout<<res.mat[i][j]<<endl;

		_getche();
		return 0;
}